package com.cpp.server.controller;

import com.cpp.common.constant.ModuleConstant;
import com.cpp.common.result.Result;
import com.cpp.pojo.dto.chapter.ChapterConfirmDTO;
import com.cpp.pojo.dto.chapter.ChapterCreateDTO;
import com.cpp.pojo.dto.chapter.ChapterQueryDTO;
import com.cpp.pojo.pojo.Chapter;
import com.cpp.pojo.vo.chapter.ChapterConfirmVO;

import com.cpp.server.aspect.annotation.MyLog;
import com.cpp.server.service.ChapterService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.concurrent.CompletableFuture;


@Slf4j
@RequiredArgsConstructor
@RestController
@RequestMapping("/resource")
@MyLog(module = ModuleConstant.OTHERS)
public class ChapterController {

    private final ChapterService chapterService;
//    后端     主页相关接口                               列表查询当前已有课程          生成章节及其对应知识点和练习题返回第一章节资源                      无操作                             保存翻页前的课程资源，并调取展示的章节资源

    //生成课程内容
    @MyLog(module = ModuleConstant.PRE_CLASS)
    @PostMapping(value = "/generate")
    public Result generateChapter(@RequestParam("courseId") Long courseId) {
        //异步调用
            ChapterConfirmVO result = chapterService.generateResource(courseId);
        return Result.success();
    }

    //更新，翻页前的课程资源
    @MyLog(module = ModuleConstant.PRE_CLASS)
    @PostMapping(value = "/confirm")
    public Result confirmChapter(@RequestBody ChapterConfirmDTO chapterConfirmDTO) {
        chapterService.confirm(chapterConfirmDTO);
        return Result.success();
    }

    //并调取展示的章节对应的所有资源
    @MyLog(module = ModuleConstant.PRE_CLASS)
    @GetMapping(value = "/showOneChapter")
    public Result showOneChapter(ChapterQueryDTO chapterQueryDTO) {
        ChapterConfirmVO result = chapterService.getOneChapter(chapterQueryDTO);
        return Result.success(result);
    }

    //新增章节（用户可以选择手动添加知识点和实训，或者让ai生成）
    @MyLog(module = ModuleConstant.PRE_CLASS)
    @PostMapping(value = "/addChapter")
    public Result addChapter(@RequestBody ChapterCreateDTO chapterCreateDTO) {
        chapterService.createChapter(chapterCreateDTO);
        return Result.success();
    }


}
